home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
64'er Special 84
/
64er_Magazin_Sonderheft_84_19xx_Markt__Technik_de_Side_A.d64
/
tiny eprommer
(
.txt
)
< prev
Wrap
Commodore BASIC
|
2022-10-26
|
10KB
|
386 lines
0 rem********************************** * tiny eprommer v 2.0 *
1 rem* ------------------- * * 1987 ruediger stahl *
2 rem* hurtenstr. 20 * * 8138 frieding-andechs *
3 rem* * * *
9 rem**********************************
10 :
20 print"[147]":poke52,48:poke56,48:poke51,0:poke55,0:poke46,46:poke45,150:clr
30 ifpeek(49152)=32andpeek(49400)=169then50
40 print"[147] tiny eprommer v2.0":print" by ruediger stahl
41 [153]" hurtenstr. 20":[153]" 8138 frieding-andechs
45 load"ma.tiny eprommer",8,1
50 lm=49152:dr=49296:bl=49464:bs=49514:co=49606:cl=49716:fi=49848
55 sys49768
59 rem typen
60 dimt$(5),al$(3)
61 t$(0)="2764 / 21 v "
62 t$(1)="27128/ 21 v "
63 t$(2)="27256/12.5 v"
64 t$(3)="8 kb /12.5 v"
65 t$(4)="16 kb/12.5 v"
66 t$(5)="32 kb/ 21 v "
70 al$(0)=" turbo speed "
71 al$(1)=" fast & secure "
72 al$(2)="standard 50 ms"
80 ei%=16
90 ifpeek(820)<>0thenal=int(peek(820)/16):ty=peek(820)-al*16
91 ifty>5thenty=0
92 ifal>2thenal=0
99 :
100 rem * hauptmenue
105 poke53280,5:poke53281,0:poke650,0:syscl
110 print"[153]>>> tiny eprommer v2.0 <<<";
120 print"----------------------------------------"
130 print" bitte waehlen:"
140 printtab(6)"'f1' = eprom brennen
145 [153][163]6)"'f3' = typ/allgorithmus waehlen
150 printtab(6)"'f5' = files/direktory
155 [153][163]6)"'f7' = zurueck zu basic
160 printtab(6)"'f2' = eprom leertest
170 [153][163]6)"'f4' = eprom auslesen
180 printtab(6)"'f6' = eprom verify
190 [153][163]6)"'f8' = tools
200 print"----------------------------------------";
210 print">>> "t$(ty)" mit "al$(al)" <<[157]"chr$(148)"<";
220 t=ty:vp=0:ift>1andt<5thenvp=1
230 ift>2thent=t-3
250 rem *** auswahl
260 geta$:ifa$=""then260
270 a=asc(a$):ifa<133ora>140then260
280 ona-132gosub 1000,2000,3000,4000,5000,6000,7000,8000
390 goto100
1000 rem *** brennen
1010 syscl
1015 print" bitte waehlen:
1020 [153][163]6)"'f1' = zurueck
1025 printtab(6)"'f3' = speicherinhalt brennen
1030 [153][163]6)"'f5' = einzelbyteprogrammierung
1050 geta$:ifa$=""then1050
1055 a=asc(a$):ifa<133ora>138then1050
1060 syscl
1065 ona-132goto 1100,1200,1300
1100 return
1200 syscl:print"speicherinhalt in eprom brennen:"
1205 d=8192*2^t-1:gosub1500:gosub1600
1206 ife1-a1<>e2-a2then1200
1210 print"eprom-typ: ";t$(ty)
1220 print"allgorithmus:";al$(al)
1225 gosub50050:ifa$="n"then1200
1230 syscl:print" *** eprom wird gebrannt ***"
1240 sys49920,al,vp,t,a1,a2,e2
1245 ifpeek(2)>0thengosub50700
1250 gosub50010
1260 return
1300 syscl:print"ein byte programmieren:"
1305 print"epromadresse (hex) ? 0000";:a$="0000":gosub50120
1310 gosub50400:a2=a:ifa<0ora>8192*2^t-1then1300
1315 print"wert (hex) ? 00";:a$="00":gosub50120:a$="00"+a$
1320 gosub50400:ifa<0ora>255then1300
1340 gosub50050:ifa$="n"then1300
1350 a1=53247:pokea1,a:e1=a1:e2=a2
1360 print"eprom-typ: ";t$(ty)
1365 print"allgorithmus:";al$(al)
1370 gosub50050:ifa$="n"then1300
1375 gosub1230
1395 goto1000
1500 print"adressen im computer (hex):"
1505 a$="3000":print"anfangsadresse ? "a$;:gosub50120
1510 gosub50400:gosub50600
1511 a1=a:ifa=0thenprint"[145][145][145]":goto1505
1515 a=a1+d:gosub50600:ifa=0thena=49151
1516 gosub50500
1520 print"endadresse ? "a$;:gosub50120
1530 gosub50400:gosub50600
1531 ifa1<49152anda>57334thena=0
1540 e1=a:ifa=0ora<a1thenprint"[145][145][145][145]":goto1505
1545 d=a-a1:return
1600 print"adressen im eprom (hex):"
1605 a$="0000":print"anfangsadresse ? "a$;:gosub50120
1610 gosub50400:a2=a
1611 ifa>8192*2^t-1ora<0thenprint"[145][145][145]":goto1605
1615 a=a2+d:ifa>8192*2^t-1thena=8192*2^t-1
1618 gosub50500
1620 print"endadresse ? "a$;:gosub50120
1630 gosub50400:e2=a
1635 ifa>8192*2^t-1thena=a2-1
1640 e2=a:ifa<a2thenprint"[145][145][145][145]":goto1505
1645 d=a-a2:return
2000 rem *** typ/allgorithmus
2010 syscl:t=ty
2015 print" epromtyp und allgorithmus waehlen:"
2020 printtab(6)"'f1' = zurueck
2025 [153][163]6)"mit cursertasten auswahlen
2030 printtab(6)"mit return abspeichern
2050 [153]"";
2060 [129]a[178]0[164]5:[139]t[178]a[167][153]"";
2065 [139]a[177]2[167][153]" spezaltypen: "t$(a)" ":[137]2075
2070 [153]" ";t$(a);" "
2075 [130]
2100 [161]a$
2105 [139]a$[178]"input"[167]2300
2106 [139]a$[178][199](13)[167]2200
2110 [139]a$[178]"on"[167]t[178]t[171]1:[139]t[179]0[167]t[178]5
2115 [139]a$[178]""[167]t[178]t[170]1:[139]t[177]5[167]t[178]0
2120 [137]2050
2200 [153]"";
2210 [129]a[178]0[164]2
2215 [139]al[178]a[167][153]"";
2220 [153]" ";al$(a);" "
2225 [130]
2250 [161]a$
2255 [139]a$[178]"input"[176]a$[178][199](13)[167]2300
2265 [139]a$[178]"on"[167]al[178]al[171]1:[139]al[179]0[167]al[178]2
2270 [139]a$[178]""[167]al[178]al[170]1:[139]al[177]2[167]al[178]0
2290 [137]2200
2300 [151]820,t[170]al[172]16:ty[178]t:[142]
3000 [143] *** files/direktory
3010 [158]cl
3015 [153]" bitte waehlen:"
3020 [153][163]6)"'f1' = zurueck
3025 printtab(6)"'f3' = direktory
3030 [153][163]6)"'f5' = programm laden
3035 printtab(6)"'f7' = programm saven [160]
3040 [153][163]6)"'f2' = floppy befehl close
3045 printtab(6)"'f4' = fehlerkanal [160]
3050 [161]a$:[139]a$[178]""[167]3050
3055 a[178][198](a$):[139]a[179]133[176]a[177]138[167]3050
3060 [158]cl
3065 [145]a[171]132[137] 3100,3200,3300,3400,3500,3600
3100 [142]
3200 :
3205 [158]dr
3210 [141]50010
3220 [137]3000
3300 [158]cl
3305 [153]"load programm:":[141]3310:[137]3350
3310 [153]"filename ? ";
3315 [141]50100:n$[178]a$:[139]n$[178]""[167]3000
3316 [139]n$[178]""[167][153]"ononon":[137]3310
3320 a$[178]"8":[153]"geraeteadresse ? "a$;
3325 [141]50120:g[178][197](a$)
3326 [139]g[179]1[176]g[177]15[167][153]"ononon":[137]3320
3330 [142]
3335 :
3350 [139]n$[178]""[167][142]
3351 [139]n$[178]"$"[167]3200
3354 [153]"unzulaessige bereiche:"
3355 [153]" $0000-$2fff und $c000-$dfff"
3360 a$[178]"3000":[153]"anfangsadresse (hex) ? ";a$;
3365 [141]50120:[141]50400
3370 [141]50600:[139]a[178]0[167]3300
3380 [141]50050:[139]a$[178]"n"[167][158]cl:[137]3300
3390 [158]bl,n$,g,a
3391 [139]st[179][177]64[167][153]" i/o-error":[137]3394
3392 a[178][194](781)[170][194](782)[172]256[171]1:[141]50500:[153]" programmende: $";a$
3394 [141]50010
3395 [139][194](49152)[178]32[175][194](49400)[178]169[167]3399
3396 [153]" programm zu lang
3397 print" epromer diskette einlegen":gosub50010:load"ma.tiny epromer",8,1
3399 goto3000
3400 syscl
3405 print"save programm:":gosub3310
3406 ifn$=""then3000
3410 print"anfangsadresse (hex) ? ";
3420 gosub50100:gosub50400
3430 ifa=-1then3400
3435 b=a
3440 print"endadresse (hex) ? ";
3445 gosub50100:gosub50400
3450 a=a+1:ifa>65535thenprint"letztes byte geht verlohren":a=65535
3460 gosub50050:ifa$="n"thensyscl:goto3400
3470 sysbs,n$,g,b,a
3471 ifst<>0thenprint" i/o-error":gosub50010
3475 goto3000
3500 :
3505 print"floppy-befehl:";
3510 ei%=25:gosub50100
3520 open1,8,15,a$:close1
3600 :
3605 open1,8,15:print"disk-status: ";
3610 get#1,a$:printa$;:if(st and64)=0goto3610
3615 close1:gosub50010:goto3000
3620 :
4000 rem *** basic
4005 syscl:print"programm benenden:
4010 [141]50050:[139]a$[178]"n"[167][142]
4020 [158]49816:[128]:[138]
5000 [143] *** eprom leertest
5010 [158]cl:[153]"eprom leertest: (vergleich mit $ff)
5020 gosub50050:ifa$="n"thenreturn
5030 sys49929,t,0,0,8192*2^t
5035 ifpeek(2)=15thenprint" eprom nicht geloescht !":gosub50700
5036 ifpeek(2)=0thenprint" eprom geloescht !"
5040 gosub50010:return
6000 rem *** eprom auslesen
6010 syscl
6015 print" bitte waehlen:
6020 [153][163]6)"'f1' = zurueck
6025 printtab(6)"'f3' = eprominhalt in com-
6026 [153][163]13)"puter einlesen
6030 printtab(6)"'f5' = einzelbyteauslese
6050 [161]a$:[139]a$[178]""[167]6050
6055 a[178][198](a$):[139]a[179]133[176]a[177]135[167]6050
6060 [158]cl
6070 [145]a[171]132[137]6100,6200,6300
6100 [142]
6200 [158]cl:[153]"eprominhalt in computer einlesen:
6205 d=8192*2^t-1:gosub1600:gosub1500
6206 ife1-a1<>e2-a2then6200
6225 gosub50050:ifa$="n"then6200
6230 sys49923,t,a1,a2,e2
6240 gosub50010:return
6300 syscl:print"ein byte auslesen:
6305 [153]"epromadresse (hex) ? 0000_cmd";:a$[178]"0000":[141]50120
6310 [141]50400:a2[178]a:[139]a[179]0[176]a[177]8192[172]2[174]t[171]1[167]6300
6340 [141]50050:[139]a$[178]"n"[167]6300
6350 a1[178]53247:[158]49923,t,a1,a2,a2
6355 a[178][194](a1):[141]50500:[153]"wert:";[194](a1);"= $";a$
6360 [141]50010:[137]6000
7000 [143] *** eprom verify
7100 [158]cl:[153]"eprominhalt mit computer vergleichen:
7105 d=8192*2^t-1:gosub1600:gosub1500
7106 ife1-a1<>e2-a2then7100
7125 gosub50050:ifa$="n"then7100
7130 sys49926,t,a1,a2,e2
7135 ifpeek(2)=15thenprint" verify error !":gosub50700:goto7140
7136 print" eprominhalt correct !"
7140 gosub50010:return
8000 rem *** tools
8010 syscl
8015 print" bitte waehlen:"
8020 printtab(6)"'f1' = zurueck
8025 [153][163]6)"'f3' = modulgenerator
8030 printtab(6)"'f5' = tiny-mon
8035 [153][163]6)"'f7' = speicherber. verschieben
8040 printtab(6)"'f2' = speicherber. fuellen
8050 [161]a$:[139]a$[178]""[167]8050
8055 a[178][198](a$):[139]a[179]133[176]a[177]137[167]8050
8060 [158]cl
8065 [145]a[171]132[137] 8100,8200,8300,8110,8120
8100 [142]
8110 [141]8450:[137]8000
8120 [141]8600:[137]8000
8200 [158]cl:[153]" modulstartgenerator wird nachgeladen.
8210 gosub50050:ifa$="n"thenreturn
8220 sys49816
8230 load"modulgen. v2.0",8
8300 syscl:poke650,128:ad=12288:print" tiny-mon:
8305 [153]" 'f1' = zurueck
8308 print" 'f3' = transver
8309 [153]" 'f4' = speicherbereich fuellen
8310 print" 'f5'/'f7';'f6'/'f8';crsr = scroll
8315 [153]" return = wert abspeichern
8350 syslm,ad
8360 print"[145][145][145][145]_[157][157][157]";
8370 geta$:ifa$=""then8370
8371 ifa$="[133]"thenpoke650,0:return
8372 ifasc(a$)>47andasc(a$)<58then8395
8373 ifasc(a$)>64andasc(a$)<71then8395
8374 ifasc(a$)=13then8400
8378 ifa$="[134]"thengosub8450:goto8300
8379 ifa$="[138]"thengosub8600:goto8300
8380 ifa$="[135]"thenad=ad-80
8381 ifa$="[136]"thenad=ad+80
8382 ifa$="[139]"thenad=ad-1024
8383 ifa$="[140]"thenad=ad+1024
8384 ifa$="[145]"thenad=ad-8
8385 ifa$=""thenad=ad+8
8386 ifa$=""thenad=ad+1
8387 ifa$="[157]"thenad=ad-1
8388 ifad<0thenad=65535
8389 ifad>65535thenad=0
8390 w$="":goto8350
8395 ifw$=""thenw$=" "
8398 w$=w$+a$:iflen(w$)>2thenw$=right$(w$,2)
8399 printw$"[157][157]";:goto8370
8400 ifw$=""then8410
8401 ifleft$(w$,1)=" "thenw$="0"+right$(w$,1)
8405 a$="00"+w$:gosub50400:pokead+16,a
8410 ad=ad+1:w$="":goto8350
8420 :
8450 rem transver
8455 syscl
8460 print" transver (hex):"
8465 print" von: ";:gosub50100:ifa$=""thenreturn
8470 gosub50400:a1=a:ifa<0then8450
8475 print" bis: ";:gosub50100:ifa$=""thenreturn
8480 gosub50400:e1=a:ifa<0then8450
8485 print" nach:";:gosub50100:ifa$=""thenreturn
8490 gosub50400:a2=a:ifa<0then8450
8500 a$="06":print" speicherkonfiguration (auch hex): ";a$;:ei%=2
8501 gosub50120:ifa$=""thenreturn
8505 a$="00"+a$:gosub50400:ifa<0then84505
8540 e1=e1+1:ife1>65535thene1=e1-65536
8550 sysco,a1,e1,a2,a
8560 return
8600 rem fill
8605 syscl
8610 print" speicherbereich fuellen (hex):"
8615 print" (greift immer auf ram zu !)
8620 [153]" von: ";:[141]50100:[139]a$[178]""[167][142]
8630 [141]50400:a1[178]a:[139]a[179]0[167]8600
8640 [153]" bis: ";:[141]50100:[139]a$[178]""[167][142]
8650 [141]50400:e1[178]a:[139]a[179]0[167]8600
8660 a$[178]"ff":[153]" wert:";a$;:ei%[178]2
8665 [141]50120:[139]a$[178]""[167][142]
8670 a$[178]"00"[170]a$:[141]50400:[139]a[179]0[167]8600
8680 e1[178]e1[170]1:[139]e1[177]65535[167]e1[178]e1[171]65536
8690 [158]fi,a1,e1,a
8695 [142]
8700 :
50000 [143] *** unterroutinen
50010 [143] auf tastendruck warten
50020 [151]198,0
50025 [139][194](214)[177]21[167][153]""
50030 [153]:[153]" t a s t e d r u e c k e n "
50045 [146]198,1,0:[151]198,0:[142]
50050 [143] eingabe ok ?
50060 [151]198,0
50070 [153]:[153]" a l l e s oclosek aclosey (j/n) ? wait"
50075 [146]198,1,0:[161]a$
50080 [139]a$[179][177]"j"[175]a$[179][177]"n"[167]50075
50085 [142]
50100 [143] input von 16 zeichen
50110 a$[178]"":
50120 [153]"_cmd";:[161]b$:[139]b$[179][177]""[167]50130
50122 [129]a[178]0[164]80:[130]:[153]"_waitcmd";
50125 [161]b$:[139]b$[179][177]""[167]50130
50127 [129]a[178]0[164]80:[130]:[137]50120
50130 [139][198](b$)[178]13[167][153]"_":ei%[178]16:[142]
50140 [139][198](b$)[177]31[175][198](b$)[179]128[167]50200
50150 [139][198](b$)[177]161[167]50200
50160 [139]b$[179][177][199](20)[175]b$[179][177]"cmd"[167]50120
50170 [139][195](a$)[179]1[167]50120
50180 a$[178][200](a$,[195](a$)[171]1)
50190 [153]" cmdcmd_cmd";
50195 [137]50120
50200 [139][195](a$)[179]ei%[167]50300
50210 [153]" cmdcmd";
50220 a$[178][200](a$,[195](a$)[171]1)
50300 a$[178]a$[170]b$
50310 [153]b$;"_cmd";
50350 [137]50120
50400 [143] hex in dez (b$ in b)
50410 a[178][171]1:[139][195](a$)[177]4[176][195](a$)[179]1[167][142]
50420 [129]x[178]1[164][195](a$)
50430 z[178][198]([202](a$,x,1))
50440 [139]47[179]z[175]z[179]58[167]z[178]z[171]48:[137]50470
50450 [139]z[179]65[176]z[177]71[167]a[178][171]1:x[178]4:[130]:[142]
50460 z[178]z[171]55
50470 a[178]a[170]z[172]16[174]([195](a$)[171]x)
50490 [130]:a[178]a[170]1:[142]
50500 [143] dez in hex (a in a$)
50510 a$[178]"":[129]x[178]3[164]0[169][171]1:w[178][181](a[173]16[174]x)
50520 a[178]a[171]w[172]16[174]x:[139]w[177]9[167]w[178]w[170]7
50530 a$[178]a$[170][199](w[170]48)
50540 [130]:[142]
50600 [143] a zulaessig ?
50610 [139]a[177]49151[175]a[179]57344[167]a[178]0
50620 [139]a[179]3[172]4096[176]a[177]65535[167]a[178]0
50640 [142]
50700 [143] aktuelle adresse
50710 a[178][194](169)[170][194](170)[172]256:[153]
50720 [153]" epromadresse:";a;:[141]50500:[153]" = $";a$
50750 [142]
60000 :